PostgreSQL WAL日志

1 什么时候发生检查点

  1. checkpoint_timeout。
  2. 超过max_wal_size 所指定的大小,删除最老的wal segment file时。
  3. smartfast 情况下关闭。
  4. 手动checkpoint。

2 max_wal_size

max_wal_size 设置是自动检查点之间增长的最大预写日志记录(WAL)量。默认是1GB,如果超过了1GB,则会发生检查点。这是一个软限制。在一个特殊的情况下,比如系统遭遇到短时间的高负载,日志产生几秒种就可以达到1GB,这个速度已经明显超过了checkpoint_timeout ,pg_wal目录的大小会急剧增加。此时我们可以从日志中看到相关类似的警告。

2.1 checkpoint_timeout

使用默认值,检查点将在 checkpoint_timeout=5min。也就是每5分钟触发一次

2.2 min_wal_size

min_wal_size 参数是只要 WAL 磁盘使用量保持在这个设置之下,在做检查点时,旧的 WAL 文件总是被回收以便未来使用,而不是直接被删除。

3 怎么样确定什么时候产生检查点呢 ?

第一步:计算每天wal日志的产生量
第二步: 根据 max_wal_size 设置的大小,计算检查点发生的时间。

PostgreSQL 服务器管理 WAL日志